.text
.global _start
.equ RCC_MC_AHB4ENCLRR,   0x50000A28
.equ GPIOE_MODER,         0x50006000
.equ GPIOE_OTYPER,        0x50006004
.equ GPIOE_OSPEEDR,       0x50006008
.equ GPIOE_PUPDR,         0x5000600C
.equ GPIOE_ODR,           0x50006014

_start:
       @1.开启GPIOE模块的时钟 
       ldr r0,=RCC_MC_AHB4ENCLRR
       ldr r1,[r0]       @将数据由内存加载到CPU中的R1寄存器
       orr r1,r1,#(1<<4) @ 修改数据
       str r1,[r0]       @ 将修改后的数据写回内存
       
       @2. 配置PE10引脚为输出模式
       ldr r0,=GPIOE_MODER
       ldr r1,[r0]
       bic r1,r1,#(1<<21)
       bic r1,r1,#(1<<20)
       orr r1,r1,#(1<<20)
       str r1,[r0]
       
       @3. 配置PE10引脚为输出推挽模式
       ldr r0,=GPIOE_OTYPER
       ldr r1,[r0]
       bic r1,r1,#(1<<10)
       str r1,[r0]
       
       @ 4. 配置PE10引脚输出速度为低速模式
       ldr r0,=GPIOE_OSPEEDR
       ldr r1,[r0]
       bic r1,r1,#(1<<21)
       bic r1,r1,#(1<<20)
       str r1,[r0]
       
       @5. 配置PE10引脚内部断开上下拉电阻 
       ldr r0,=GPIOE_PUPDR 
       ldr r1,[r0]
       bic r1,r1,#(1<<21)
       bic r1,r1,#(1<<20)
       str r1,[r0]
loop:
     @ 6.点亮LED 
     ldr r0,=GPIOE_ODR 
     ldr r1,[r0]
     orr r1,r1,#(1<<10)
     str r1,[r0]
     @ 7.延迟一定时刻 
     BL delay
     @ 8. 熄灭LED
     ldr r0,=GPIOE_ODR 
     ldr r1,[r0]
     bic r1,r1,#(1<<10)
     str r1,[r0]
     @延迟一定时刻
     BL delay
     B loop
delay:
	 ldr r3,=10000000
	 delayUnit:
	 cmp r3,#0
	 subne r3,r3,#1
	 bne delayUnit
	 mov pc,lr
.end


